home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / gnu / include / incl98.zoo / setjmp.h < prev    next >
C/C++ Source or Header  |  1993-11-05  |  1KB  |  60 lines

  1. #ifndef _SETJMP_H
  2. #define _SETJMP_H
  3.  
  4. #ifndef _COMPILER_H
  5. #include <compiler.h>
  6. #endif
  7.  
  8. #ifdef __cplusplus
  9. extern "C" {
  10. #endif
  11.  
  12. #ifdef __TURBOC__
  13.  
  14. #  ifdef __68881__
  15. typedef char jmp_buf[12 * 4 + 5 * 12];
  16. #  else
  17. typedef char *jmp_buf[12];
  18. #  endif
  19.  
  20. #else /* __TURBOC__ */
  21.  
  22. typedef long jmp_buf[14]; /* retaddr, 12 regs, sigmask */
  23.  
  24. #endif /* __TURBOC__ */
  25.  
  26. #ifndef __STRICT_ANSI__
  27.  
  28. typedef jmp_buf sigjmp_buf;
  29.  
  30. __EXTERN int    sigsetjmp  __PROTO((sigjmp_buf env, int savemask));
  31. __EXTERN int    siglongjmp __PROTO((sigjmp_buf env, int val));
  32.  
  33. #ifdef _BSD_SOURCE
  34. /* BUG: we lose if _BSD_SOURCE && __STRICT_ANSI__ */
  35. #define _setjmp(__jb)        (sigsetjmp(__jb, 0))
  36. #define _longjmp(__jb,__v)    (siglongjmp(__jb, __v))
  37. #define setjmp(__jb)        (sigsetjmp(__jb, 1))
  38. #define longjmp(__jb,__v)    (siglongjmp(__jb, __v))
  39. #endif /* _BSD_SOURCE */
  40.  
  41. #endif /* __STRICT_ANSI__ */
  42.  
  43. #ifndef _BSD_SOURCE
  44. __EXTERN int    setjmp    __PROTO((jmp_buf));
  45. __EXTERN void    longjmp    __PROTO((jmp_buf, int));
  46. #endif /* not _BSD_SOURCE */
  47.  
  48. #ifndef __MINT__
  49. # ifndef __cplusplus
  50. __EXTERN int catch __PROTO((jmp_buf id, int (*fn )(void )));
  51. __EXTERN void throw __PROTO((jmp_buf id, int rv));
  52. # endif
  53. #endif
  54.  
  55. #ifdef __cplusplus
  56. }
  57. #endif
  58.  
  59. #endif /* _SETJMP_H */
  60.